package com.iamteer.day12;

import java.util.Arrays;

/**
主要回顾：String 的常用方法

1. String 的构造方法：

	String();	//创建一个内容为空的字符串
	
	String(byte[] bytes);	//使用一个字节数组构建一个字符串对象
	
	String(byte[] bytes, int offset, int length);
			bytes: 要解码的数组
			offset: 指定从数组中哪个索引开始解码
			length: 要解码多少个元素
			
	String(char[] value);	//使用一个字符数组构建一个字符串对象
	
	//使用一个字符数组构建一个字符串对象，指定开始的索引值与使用的字符个数。
	String(char[] value, int offset, int count);
	
	String(int[], codePoints, int offset, int count);
	
	String(String original);

2. String 类的获取方法

	int length();	//获取字符串的长度
	
	char charAt(int index);	//获取特定位置的字符（角标越界）
	
	int indexOf(String str);	//获取特定字符的位置（overload），没找到返回-1
	
	int lastIndexOf(int ch);	//获取最后一个字符的位置，没找到返回-1

3. String 类的判断方法

	boolean endsWith(String str);	//是否以指定字符结束
	boolean isEmpty();				//是否长度为 0
	boolean contains(CharSequences);//是否包含指定序列
	boolean equals(Object anObject);//是否相等
	boolean equalsIgnoreCase(String anotherString);//忽略大小是否相等

4. String 类的转换方法

	String(char[] value);	//字符数组转换成字符串
	String(char[] value, int offset, int count);	//字符数组转换成字符串
	Static String valueOf(char[] data);				//字符数组转换成字符串
	Static String valueOf(char[], int offset, int count);//字符数组转换成字符串
	char[] toCharArray();	//字符串转换成字符数组
	byte[] getBytes();		//字符串转换成字节数组

5. String 类的其他方法

	String replace(char oldChar, char newChar);	//替换
	String[] split(String regex);				//分割
	String substring(int beginIndex);			//子字符串
	String substring(int beginIndex, int endIndex);	//子字符串
	String toUpperCase();						//大写
	String toLowerCase();						//小定
	String trim();								//去除空格
 */
public class StringMethods {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		stringConstructors();
		stringGetMethods();
		stringBoolMethods();
		stringConversion();
		stringOtherMethod();
	}
	
	public static void stringConstructors() {
		// TODO Auto-generated method stub
		String string = new String();
		System.out.println(string);
		
		byte[] buf = {97, 98, 99};
		string = new String(buf);
		System.out.println(string);
		
		string = new String(buf, 1, 2);
		System.out.println(string);
		
		char[] arr = {'我', '是', '中', '国', '人'};
		string = new String(arr);
		System.out.println(string);
		
		string = new String(arr, 2, 3);
		System.out.println(string);
		
		int[] buf2 = {65, 66, 67, 68};
		string = new String(buf2, 0, 3);
		System.out.println(string);
	}	

	public static void stringGetMethods() {
		// TODO Auto-generated method stub
		String str = "acb中国acb中国acb中国";
		System.out.println("字符串的字符个数：" + str.length());
		System.out.println(str.charAt(3));
		System.out.println(str.indexOf("中国"));
		System.out.println(str.indexOf("美国"));
		System.out.println(str.lastIndexOf("中国"));
		
	}
	
	public static void stringBoolMethods() {
		// TODO Auto-generated method stub
		String str = "Demo.java";
		System.out.println(str.endsWith("ja"));
		
//		str = "";
		System.out.println(str.isEmpty());
		
//		str = null;		//异常
//		System.out.println(str.isEmpty());
		
		System.out.println(str.contains("Demo"));
		
		System.out.println("Demo.JAVA".equals(str));
		
		System.out.println("DEMO.JAva".equalsIgnoreCase(str));
	}
	
	public static void stringConversion() { //conversion
		// TODO Auto-generated method stub
		String str = "Demo.java";
		char[] buf = str.toCharArray();
		System.out.println(Arrays.toString(buf));
		
		byte[] buf1 = str.getBytes();
		System.out.println(Arrays.toString(buf1));
	}
	/*
	String replace(char oldChar, char newChar);	//替换
	String[] split(String regex);				//分割
	String substring(int beginIndex);			//子字符串
	String substring(int beginIndex, int endIndex);	//子字符串
	String toUpperCase();						//大写
	String toLowerCase();						//小定
	String trim();								//去除头尾空格
	 * 
	 * */
	public static void stringOtherMethod() {
		String string = "今天天气真好";
		System.out.println(string.replace("真", "不"));
		
		string = "今-天-天-气-真-好";
		String[] arr = string.split("-");
		System.out.println(Arrays.toString(arr));
		
		string = "美丽中国";
		System.out.println(string.substring(2));
		System.out.println(string.substring(0, 2));
		
		string = "  美 丽   中 国 ";
		System.out.println(string.trim());
	}
}

